package LandR.register.phone.phoneSrc.l7;

import LandR.register.phone.phoneSrc.function.User;
import LandR.register.phone.phoneSrc.function.jsonFunction;

import javax.servlet.annotation.WebServlet;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;

@WebServlet("/sms")
public class SMSCode extends javax.servlet.http.HttpServlet {
    @Override
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        // 接口类型：互亿无线触发短信接口，支持发送验证码短信、订单通知短信等。
        // 账户注册：请通过该地址开通账户http://sms.ihuyi.com/register.html
        // 注意事项：
        //（1）调试期间，请使用用系统默认的短信内容：您的验证码是：【变量】。请不要把验证码泄露给其他人。；
        //（2）请使用APIID（查看APIID请登录用户中心->验证码短信->产品总览->APIID）及 APIkey来调用接口；
        //（3）该代码仅供接入互亿无线短信接口参考使用，客户可根据实际需要自行编写；

        InputStreamReader insr = new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8);
        StringBuilder results = new StringBuilder();
        int respInt = insr.read();
        while (respInt != -1) { // 读取请求数据
            results.append((char) respInt);
            respInt = insr.read();
        }
        System.out.println("前端传递的手机号注册数据为：" + results.toString());
        /*
        前端传来的数据是只有手机号
         */

        jsonFunction jf = new jsonFunction();
        String json = results.toString();
        User user = jf.jsonToJavaObjectByFastJson(json);

        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=UTF-8");

        String postUrl = "http://106.ihuyi.cn/webservice/sms.php?method=Submit";

        int mobile_code = (int) ((Math.random() * 9 + 1) * 100000); //获取随机数

        request.getSession().setAttribute("valiCode", mobile_code);
        System.out.println("获取验证码的session的id是：" + request.getSession().getId());


        String account = "C39319016"; //查看用户名是登录用户中心->验证码短信->产品总览->APIID
        String password = "cd8500cc549fd016ae72a7e6377fafa4";  //查看密码请登录用户中心->验证码短信->产品总览->APIKEY

        String mobile = user.getPhoneNumber();
        String content = new String("您的验证码是：" + mobile_code + "。请不要把验证码泄露给其他人。");//发送给手机的信息
        try {
            System.out.println("成功执行");

            URL url = new URL(postUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoOutput(true);//允许连接提交信息
            connection.setRequestMethod("POST");//网页提交方式“GET”、“POST”
            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            connection.setRequestProperty("Connection", "Keep-Alive");
            StringBuffer sb = new StringBuffer();
            sb.append("account=" + account);
            sb.append("&password=" + password);
            sb.append("&mobile=" + mobile);
            sb.append("&content=" + content);
            OutputStream os = connection.getOutputStream();
            os.write(sb.toString().getBytes());
            os.close();

            String line, result = "";
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));
            while ((line = in.readLine()) != null) {
                result += line + "\n";
            }
            in.close();
            response.setContentType("text/html;charset=UTF-8");
            response.setCharacterEncoding("utf-8");
            response.getWriter().write(result);

        } catch (IOException e) {
            e.printStackTrace(System.out);
        }

    }

    @Override
    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        this.doPost(request, response);
    }
}
